@哈哈鱼
2年前 提问
1个回答

c语言选择排序

齐士忠
2年前

C语言的选择排序算法的基本思想就是依次选出数组最小的数放到数组的前面,在C语言中我们可以使用两个for循环,先从数组的第二个元素开始往后遍历,找出最小的数放到第一个位置,再从剩下数组中找出最小的数放到第二个位置,以此类推,直到数组有序。先判断最小的数的下标是不是 0,如果不是则说明最小的数不是第一个元素,则将这个数与第一个元素互换位置,这样一轮下来最小的那个数就被找到并放到了最左边。

C语言选择排序实现代码如下:

void print(int a[], int n ,int i){
cout<<"第"<<i+1 <<"趟 : ";
for(int j= 0; j<8; j++){
cout<<a[j] <<"  ";
  }
cout<<endl;
}
/**
 * 数组的最小值
 *
 * @return int 数组的键值
 */
int SelectMinKey(int a[], int n, int i)
{
int k = i;
for(int j=i+1 ;j< n; ++j) {
if(a[k] > a[j]) k = j;
  }
return k;
}

/**
 * 选择排序
 *
 */
void selectSort(int a[], int n){
int key, tmp;
for(int i = 0; i< n; ++i) {
    key = SelectMinKey(a, n,i);           //选择最小的元素
if(key != i){
      tmp = a[i];  a[i] = a[key]; a[key] = tmp; //最小元素与第i位置元素互换
    }
    print(a,  n , i);
  }
}
int main(){
int a[8] = {3,1,5,7,2,4,9,6};
cout<<"初始值:";
for(int j= 0; j<8; j++){
cout<<a[j] <<"  ";
  }
cout<<endl<<endl;
  selectSort(a, 8);
  print(a,8,8);
}